#ifndef __MY_OPENCV_TEST__
#define __MY_OPENCV_TEST__

//set to 1 to use my reimplemention instead of OpenCV
#define MY_IMP 0
#include <opencv2/core/core.hpp>

//tests
int svm_test();
int haartraining_test(cv::Mat image);

//main interface
void my_templateMatch(cv::Mat &image, cv::Mat &temp, cv::Mat &result, int method);
void my_templateMatchShow(cv::Mat &image, cv::Mat &temp, int method=0);
void my_videotemplateMatch(cv::Mat &temp, int method, bool bResize=true);
void my_templateMatchMultiScale(cv::Mat &image, cv::Mat &temp, cv::Mat &result, int method, double confidence);
void my_templateMatchPyramid(cv::Mat &image, cv::Mat &temp, cv::Mat &result, int maxlevel, double confidence);
void my_videotemplateMatchSIFT(cv::Mat &temp, int method, bool bResize=true );
//helper functions
void my_convertToBinary(cv::Mat &image, cv::Mat &result, int threshold=128);
void my_convertToGray8Bit(cv::Mat &image);
void my_openImage(cv::Mat &image, int morph_size=0);
void my_equalizeHistByTemplate(cv::Mat &image, cv::Mat &temp);

void my_SIFTTest(cv::Mat &image, cv::Mat &temp, int method, bool bResize);
int my_SURFTest( cv::Mat &img_scene, cv::Mat &img_object );


void GHTDetect(cv::Mat origin, cv::Mat temp, cv::Mat image);
void GHTCreateTemplate(cv::Mat img);

#endif